package com.medical.literature.user.service;

import com.medical.literature.user.dto.LoginRequest;
import com.medical.literature.user.dto.RegisterRequest;
import com.medical.literature.user.dto.UserInfoResponse;
import com.medical.literature.user.entity.User;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     */
    void register(RegisterRequest request);
    
    /**
     * 用户登录
     */
    String login(LoginRequest request);
    
    /**
     * 根据用户名获取用户信息
     */
    User getUserByUsername(String username);
    
    /**
     * 根据用户ID获取用户信息
     */
    UserInfoResponse getUserInfo(Long userId);
    
    /**
     * 更新最后登录时间
     */
    void updateLastLoginTime(Long userId);
    
    /**
     * 检查用户名是否存在
     */
    boolean existsByUsername(String username);
    
    /**
     * 检查邮箱是否存在
     */
    boolean existsByEmail(String email);
    
    /**
     * 更新用户信息
     */
    void updateUserInfo(Long userId, UserInfoResponse userInfo);
    
    /**
     * 修改用户密码
     */
    void changePassword(Long userId, String oldPassword, String newPassword);
}